<?php

class CSDebug
{
	protected static $s_aoLogs;
	
	
	public function assertString($psString, $pbTestIfEmpty=true)
	{
		assert('is_string($psString)');
		
		if (!is_string($psString)) 
		{
			return true;
		}
		
		if ($pbTestIfEmpty && self::assertEmpty($psString))
		{
			return true;
		}
		
		return false;
	}
	
	
	public function assertFloat($pnFloat, $pbTestEmpty=false)
	{
		assert('is_float($pnFloat)');
		
		if (!is_float($pnFloat)) 
		{
			return true;
		}
		
		if ($pbTestEmpty)
		{
			if (empty($pnFloat)) return true;
		}	
		
		return false;
	}
	
	
	public function assertNumber($pnNumber, $pbTestEmpty=false)
	{
		assert('is_numeric($pnNumber)');
		
		if (!is_numeric($pnNumber)) 
		{
			return true;
		}
		
		if ($pbTestEmpty)
		{
			if (empty($pnNumber)) return true;
		}	
		
		return false;
	}
	
	
	public function assertInteger($pnInteger, $pbTestEmpty=false)
	{
		assert('is_integer($pnInteger); // valeur testée : '.$pnInteger);
		
		if ($pbTestEmpty)
			assert('!empty($pnInteger); // valeur testée : '.$pnInteger);
		
		if (!is_integer($pnInteger)) 
		{
			return true;
		}
		
		if ($pbTestEmpty)
		{
			if (empty($pnInteger)) return true;
		}	
		
		return false;
	}
	
	
	public function assertBoolean($pnBoolean)
	{
		assert('is_bool($pnBoolean); // valeur testée : '.$pnBoolean);
		
		if (!is_bool($pnBoolean)) 
		{
			return true;
		}
		
		return false;
	}
	
	
	public function assertEmpty($psElement)
	{
		assert('!empty($psElement);');
		
		if (empty($psElement)) 
		{
			return true;
		}
		
		return false;
	}
	
	
	public function assertArray($pasArray)
	{
		assert('is_array($pasArray);');
		assert('!empty($pasArray);');
		
		if (empty($pasArray) || !is_array($pasArray)) 
		{
			return true;
		}
		
		return false;
	}
	
	
	public function assertObject($poObject)
	{
		assert('is_object($poObject)');
		
		if (!is_object($poObject)) 
		{
			return true;
		}
		
		return false;
	}
	
	
	public function assertFile($psFilePath)
	{
		assert('is_file($psFilePath)');
		
		if (!is_file($psFilePath)) 
		{
			return true;
		}
		
		return false;
	}
	
	
	public function assertDir($psDirPath)
	{
		assert('is_dir($psDirPath); // valeur testée : '.$psDirPath);
		
		if (!is_dir($psDirPath)) 
		{
			return true;
		}
		
		return false;
	}     
	
	
	public function assertHex($psColor)
	{
		assert('self::isHex($psColor); // valeur testée : '.$psColor);
		
		if (!self::isHex($psColor))
		{
			return true;
		}
		
		return false;
	}     
	
	
	/**
	 * Génère le code avec la pile d'execution
	 *
	 */
	public static function getExecutionQueue($pnDepth)
	{
		$asDebug 				= debug_backtrace();
		$asItem 				= array();
		
		$asItem['file'] 		= basename($asDebug[$pnDepth]["file"]);
		$asItem['function']		= $asDebug[$pnDepth]["function"];
		$asItem['line'] 		= $asDebug[$pnDepth]["line"];
		
		return $asItem;
	}
	
	
	public static function isHex($psColor)
    {
    	$bReturn = false;
    	if (preg_match('/^[0-9ABCDEFabcdef\#]+$/', $psColor))
    		$bReturn = true;
    		
    	return $bReturn;	
    }
}

?>